package bsqxday11;
//游游有n个苹果，m个桃子。她可以把2个苹果和1个桃子组成价值a元的导水果大礼包，也可以把1个苹果和2个桃子组成价值b元的二号水果大礼包。游游想知道，自己最多能组成多少价值总和的大礼包?
//
//输入描述
//四个正整数n, m,a, b,用空格隔开。分别代表苹果的数量、桃子的数量、一号大礼包价值、二号大礼包价值。
//
//输出描述
//一个整数， 代表大礼包的最大价值总和

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //输入
        int n = in.nextInt();
        int m = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();

        long sum = 0;

        long sun1 = Math.min(n/2,m);  //找出a礼包最大为多少
        //求当a礼包最大的时候  b礼包数量为多少
        long sum2 = Math.min(n-sun1*2,(m-sun1)/2);

        sum = sun1 * a + sum2 * b;

        //那 该怎么分配 a礼包和b礼包的数量才能使组成的价值最大呢     我们可以用一个循环解决

        while(sun1 > 0) {
            sun1--;
            sum2 = Math.min(n-sun1*2,(m-sun1) / 2);
            long tmp = sun1 * a + b * sum2;
            if(tmp > sum) {  //如果比之前的大 就换
                sum = tmp;
            }
        }

        //输出
        System.out.println(sum);
    }
    }
